package main

import "fmt"

/**
Given an array of size n, find the majority element. The majority element is the element that appears more than ⌊ n/2 ⌋ times.

You may assume that the array is non-empty and the majority element always exist in the array.

Example 1:

Input: [3,2,3]
Output: 3
Example 2:

Input: [2,2,1,1,1,2,2]
Output: 2
*/

//借助哈希表实现
func majorityElement(nums []int) int {
	container := make(map[int]int)

	res := nums[0]
	for _, v := range nums {
		if count, ok := container[v]; ok {
			container[v] = count + 1
		} else {
			container[v] = 1
		}

		if container[v] > (len(nums) / 2) {
			res = v
			break
		}
	}
	return res
}

func main() {
	fmt.Println(majorityElement([]int{1, 2, 3, 4, 1}))
}
